#include "myi2c.h"
#include "ap3216c.h"
#include <stdbool.h>
int wendumax = 28;
int wendumin = 10;
int lightmax=30;
int lightmin=90;
int soil_shidumax = 40;
float temperature=0;
float humidity=0;
float soil_humidity=0;
int light=0;
bool lamp=false;//光照开关
bool fan=false;
bool irrigated=false;//led2 喷淋器
bool alarm=false;
bool zheyang=false;
uint16_t i2c_read(uint8_t cmd)
{
	uint8_t sht20_data_buf[2] = {0};
	uint16_t sht20_data = 0;
	
	HAL_I2C_Master_Transmit(&hi2c1,sht20_address_w,&cmd,1,100);
	HAL_Delay(10);
	HAL_I2C_Master_Receive(&hi2c1,sht20_address_r,sht20_data_buf,2,100);
	HAL_Delay(10);
	sht20_data = (sht20_data_buf[0] << 8 | sht20_data_buf[1]);
	return sht20_data;
}

bool read_gpio_state(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) {
    return HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_SET;
}
void sht20_data(void)
{
	uint16_t t_data;
	uint16_t rh_data;
	uint16_t ir, als, ps;
	t_data = i2c_read(t_cmd);
	rh_data = i2c_read(rh_cmd);
	temperature = -46.85+175.72*t_data/65536;
	humidity = -6 + 125*rh_data/65536;
	soil_humidity=humidity-humidity*0.8;
	ap3216c_init();
	ap3216c_read_data(&ir, &ps, &als);
	light=als;
	 fan = read_gpio_state(GPIOC, fengshan_Pin);       // 风扇状态
   lamp = read_gpio_state(GPIOC, led1_Pin);  // 照明LED状态
   irrigated = read_gpio_state(GPIOC, led3_Pin);         // 水泵状态
   alarm = read_gpio_state(alarm_GPIO_Port, alarm_Pin);      // 蜂鸣器状态
//  shading = read_gpio_state(GPIOC, zheyang_Pin);    // 遮阳状态
//	if(temperature>=wendumax)
//	{
//		HAL_GPIO_WritePin(GPIOC,fengshan_Pin,GPIO_PIN_SET);
//		HAL_GPIO_WritePin(GPIOC,led2_Pin,GPIO_PIN_RESET);
//		fan=true;
//		led2=false;

//	}
//	else if(temperature<wendumax&&temperature>wendumin)
//		{
//			HAL_GPIO_WritePin(GPIOC,fengshan_Pin,GPIO_PIN_RESET);
//			HAL_GPIO_WritePin(GPIOC,led2_Pin,GPIO_PIN_RESET);
//			fan=false;
//			led2=false;
//	}
//   else if(temperature<=wendumin)
//		{
//			HAL_GPIO_WritePin(GPIOC,fengshan_Pin,GPIO_PIN_RESET);
//			HAL_GPIO_WritePin(GPIOC,led2_Pin,GPIO_PIN_SET);
//			fan=false;
//			led2=true;
//		}
//	if(soil_humidity>soil_shidumax)
//	{
//		water=false;
//	}
//	else
//	{
//		water=false;
//	}
//	if(light>=lightmax)
//	{
//		
//		HAL_GPIO_WritePin(GPIOC,led1_Pin,GPIO_PIN_RESET);
//		zheyang=true;
//		led1=false;
//	}
//	else if(light<lightmax&&light>lightmin)
//		{
//		zheyang=false;
//		led1=false;
//	}
//   else if(light<=lightmin)
//		{
//		HAL_GPIO_WritePin(GPIOC,led1_Pin,GPIO_PIN_SET);
//		zheyang=false;
//		led1=true;
//		}
//		 printf("{\"temperature\":%.2f,\"humidity\":%.2f,\"soil_humidity\":%.2f,\
//\"light\":%u,\"led1\":%d,\"alarm\":%d,\"fan\":%d,\"irrigated\":%d}",
//    temperature, humidity, soil_humidity, light, lamp, alarm, fan, irrigated);
	}
// 读取GPIO状态

